package com.gitee.deeround.jdbchelper.core;

import com.gitee.deeround.jdbchelper.out.DbColumn;
import com.gitee.deeround.jdbchelper.out.DbTable;


/**
 * 数据库操作ddl
 *
 * @author deeround
 * @date 2024/03/29
 */
public interface DbActionDdl {

    /**
     * 表是否存在
     *
     * @param tableName 表名称
     * @return boolean
     */
    boolean existsTable(String tableName);

    /**
     * 字段是否存在
     *
     * @param tableName  表名称
     * @param columnName 列名
     * @return boolean
     */
    boolean existsTableColumn(String tableName, String columnName);

    /**
     * 创建表
     *
     * @param dbTable db表
     */
    void createTable(DbTable dbTable);

    /**
     * 删除表
     *
     * @param tableName 表名称
     */
    void dropTable(String tableName);

    /**
     * 复制表（仅结构）
     *
     * @param tableName    表名称
     * @param newTableName 新表名
     */
    void copyTable(String tableName, String newTableName);

    /**
     * 添加表列
     *
     * @param dbColumn db列
     */
    void addTableColumn(DbColumn dbColumn);

    /**
     * 修改表列
     *
     * @param dbColumn db列
     */
    void modifyTableColumn(DbColumn dbColumn);

    /**
     * 删除表列
     *
     * @param tableName  表名称
     * @param columnName 列名
     */
    void removeTableColumn(String tableName, String columnName);

}
